package org.clever.arkdemo.video.domain.dto;

import lombok.Getter;
import lombok.Setter;

import java.util.concurrent.TimeUnit;

/**
 * @author zhangxingyu
 */
@Getter
@Setter
public class TencentVodUploadSignParam {
    /**
     * 云 API 密钥中的 SecretId，
     */
    private String secretId;
    /**
     * 云 API 密钥中的 SecretKey，
     */
    private String secretKey;
    /**
     * 最长支持： TimeUnit.DAYS.toMillis(90);
     *
     */
    private long timeout = TimeUnit.DAYS.toMillis(1);

    /**
     * (可选)视频分类ID, 默认为0。
     */
    private Integer classId;

    /**
     * (可选)视频处理流程，默认为空。
     * <p>视频后续任务处理操作，即完成视频上传后，可自动发起任务流操作。参数值为任务流模板名，云点播支持 创建任务流模板 并为模板命名。</p>
     */
    private String procedure;
    /**
     * (可选)
     * 视频后续任务优先级（仅当指定了 procedure 时才有效），取值范围为[-10，10]，默认为0。
     */
    private Integer taskPriority;

    /**
     * (可选)
     * <p>· 任务流状态变更通知模式（仅当指定了 procedure 时才有效）。</p>
     * <p>· Finish：只有当任务流全部执行完毕时，才发起一次事件通知。</p>
     * <p>· Change：只要任务流中每个子任务的状态发生变化，都进行事件通知。</p>
     * <p>· None：不接受该任务流回调。 </p>
     * <p>· 默认为 Finish。</p>
     */
    private String taskNotifyMode;

    /**
     * (可选) 来源上下文，用于透传用户请求信息，上传完成回调 将返回该字段值，最长250个字符。
     */
    private String sourceContext;

    /**
     * (可选)
     * 签名是否单次有效，详细请参见 客户端上传指引 - 单次有效签名。
     * 默认为0，表示不启用；1表示签名单次有效。
     * 相关错误码详见 单次有效签名说明。
     */
    private Integer oneTimeValid;
    /**
     * (可选) 应用 ID，如果不填写、填写0或填写开发者的腾讯云 AppId，则操作的应用为“默认应用”。
     */
    private String vodSubAppId;

    /**
     * (可选) 会话上下文，用于透传用户请求信息，当指定 procedure 参数后，任务流状态变更回调 将返回该字段值，最长 1000 个字符。
     */
    private String sessionContext;
    /**
     * (可选) 存储区域，可指定存储地域，可以在控制台上自助添加存储地域，详细请参见 上传存储设置，该字段填写为存储地域的 英文简称。
     * <a href="https://cloud.tencent.com/document/product/266/9760#Storage">存储地域</a>
     */
    private String storageRegion;
}
